home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / internet / amitcp3.0b / src.lha / src / amitcp / api / amiga_raf.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-08  |  5.3 KB  |  164 lines

  1. #ifndef AMIGA_RAF_H
  2. #define AMIGA_RAF_H
  3. /*
  4.  * amiga_raf.h - Register Argument Function definitions
  5.  *
  6.  * Last modified: Tue Mar 16 23:20:28 1993 ppessi
  7.  * 
  8.  * HISTORY
  9.  * $Log: amiga_raf.h,v $
  10.  * Revision 1.1  1993/03/05  03:25:57  ppessi
  11.  * Initial revision
  12.  *
  13.  * Revision 1.1  93/02/28  22:38:09  22:38:09  ppessi (Pekka Pessi)
  14.  *     Register Argument Function definitions
  15.  * 
  16.  */
  17.  
  18. /*
  19.  * RAF1...RAF7 gives consistent way to make function take arguments in
  20.  * registers. currently __GNUC__ and __SASC supported.
  21.  */
  22.  
  23. #if __SASC
  24.  
  25. #define RAF1(funname, type1, arg1, reg1)    \
  26.  __asm funname(register __##reg1 type1 arg1)    \
  27. {
  28.  
  29. #define RAF2(funname,type1, arg1, reg1,type2, arg2, reg2) \
  30.  __asm funname(register __##reg1 type1 arg1,    \
  31.            register __##reg2 type2 arg2)    \
  32. {
  33.  
  34. #define RAF3(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3)\
  35.  __asm funname(register __##reg1 type1 arg1,    \
  36.            register __##reg2 type2 arg2,    \
  37.            register __##reg3 type3 arg3)    \
  38. {
  39.  
  40. #define RAF4(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4) \
  41.  __asm funname(register __##reg1 type1 arg1,    \
  42.            register __##reg2 type2 arg2,    \
  43.            register __##reg3 type3 arg3,    \
  44.            register __##reg4 type4 arg4)    \
  45. {
  46.  
  47. #define RAF5(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4, type5, arg5, reg5) \
  48.   __asm funname(register __##reg1 type1 arg1,    \
  49.            register __##reg2 type2 arg2,    \
  50.            register __##reg3 type3 arg3,    \
  51.            register __##reg4 type4 arg4,    \
  52.            register __##reg5 type5 arg5)    \
  53. {
  54.  
  55. #define RAF6(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4, type5, arg5, reg5, type6, arg6, reg6) \
  56.  __asm funname(register __##reg1 type1 arg1,    \
  57.            register __##reg2 type2 arg2,    \
  58.            register __##reg3 type3 arg3,    \
  59.            register __##reg4 type4 arg4,    \
  60.            register __##reg5 type5 arg5,    \
  61.            register __##reg6 type6 arg6)    \
  62. {
  63.  
  64. #define RAF7(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4, type5, arg5, reg5, type6, arg6, reg6, type7, arg7, reg7) \
  65.  __asm funname(register __##reg1 type1 arg1,    \
  66.            register __##reg2 type2 arg2,    \
  67.            register __##reg3 type3 arg3,    \
  68.            register __##reg4 type4 arg4,    \
  69.            register __##reg5 type5 arg5,    \
  70.            register __##reg6 type6 arg6,    \
  71.            register __##reg7 type7 arg7)    \
  72. {
  73.  
  74. #elif __GNUC__
  75.  
  76. #define RAF1(funname,type1, arg1, reg1) \
  77.   funname(VOID)                \
  78. {                    \
  79.   register type1 reg1 __asm(#reg1); \
  80.   type1 arg1 = reg1;                         
  81.  
  82. #define RAF2(funname, type1, arg1, reg1, type2, arg2, reg2) \
  83.   funname(VOID)                \
  84. {                    \
  85.   register type1 reg1 __asm(#reg1); \
  86.   type1 arg1 = reg1;             \
  87.   register type2 reg2 __asm(#reg2); \
  88.   type2 arg2 = reg2;                         
  89.  
  90. #define RAF3(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3)\
  91.   funname(VOID)                \
  92. {                    \
  93.   register type1 reg1 __asm(#reg1); \
  94.   type1 arg1 = reg1;             \
  95.   register type2 reg2 __asm(#reg2); \
  96.   type2 arg2 = reg2;             \
  97.   register type3 reg3 __asm(#reg3); \
  98.   type3 arg3 = reg3;                         
  99.  
  100. #define RAF4(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4)           \
  101.   funname(VOID)                \
  102. {                    \
  103.   register type1 reg1 __asm(#reg1); \
  104.   type1 arg1 = reg1;             \
  105.   register type2 reg2 __asm(#reg2); \
  106.   type2 arg2 = reg2;             \
  107.   register type3 reg3 __asm(#reg3); \
  108.   type3 arg3 = reg3;             \
  109.   register type4 reg4 __asm(#reg4); \
  110.   type4 arg4 = reg4;                         
  111.  
  112. #define RAF5(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4, type5, arg5, reg5) \
  113.   funname(VOID)                \
  114. {                    \
  115.   register type1 reg1 __asm(#reg1); \
  116.   type1 arg1 = reg1;             \
  117.   register type2 reg2 __asm(#reg2); \
  118.   type2 arg2 = reg2;             \
  119.   register type3 reg3 __asm(#reg3); \
  120.   type3 arg3 = reg3;             \
  121.   register type4 reg4 __asm(#reg4); \
  122.   type4 arg4 = reg4;             \
  123.   register type5 reg5 __asm(#reg5); \
  124.   type5 arg5 = reg5;                         
  125.  
  126.  
  127. #define RAF6(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4, type5, arg5, reg5, type6, arg6, reg6) \
  128.   funname(VOID)                \
  129. {                    \
  130.   register type1 reg1 __asm(#reg1); \
  131.   type1 arg1 = reg1;             \
  132.   register type2 reg2 __asm(#reg2); \
  133.   type2 arg2 = reg2;             \
  134.   register type3 reg3 __asm(#reg3); \
  135.   type3 arg3 = reg3;             \
  136.   register type4 reg4 __asm(#reg4); \
  137.   type4 arg4 = reg4;             \
  138.   register type5 reg5 __asm(#reg5); \
  139.   type5 arg5 = reg5;             \
  140.   register type6 reg6 __asm(#reg6); \
  141.   type6 arg6 = reg6;                         
  142.  
  143. #define RAF7(funname, type1, arg1, reg1, type2, arg2, reg2, type3, arg3, reg3, type4, arg4, reg4, type5, arg5, reg5, type6, arg6, reg6, type7, arg7, reg7) \
  144.   funname(VOID)                \
  145. {                    \
  146.   register type1 reg1 __asm(#reg1); \
  147.   type1 arg1 = reg1;             \
  148.   register type2 reg2 __asm(#reg2); \
  149.   type2 arg2 = reg2;             \
  150.   register type3 reg3 __asm(#reg3); \
  151.   type3 arg3 = reg3;             \
  152.   register type4 reg4 __asm(#reg4); \
  153.   type4 arg4 = reg4;             \
  154.   register type5 reg5 __asm(#reg5); \
  155.   type5 arg5 = reg5;             \
  156.   register type6 reg6 __asm(#reg6); \
  157.   type6 arg6 = reg6;             \
  158.   register type7 reg7 __asm(#reg7); \
  159.   type7 arg7 = reg7;                         
  160.  
  161. #endif /* __SASC | __GNUC__ */
  162.  
  163. #endif /* !defined(AMIGA_RAF_H) */
  164.